package com.edu.study.base.stuProductCatalog.domain;

import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import org.springframework.data.annotation.Transient;

import java.util.ArrayList;
import java.util.List;

/**
 * 产品（含章节层级）对象 stu_product_catalog
 *
 * @author zw
 * @date 2021-05-13
 */
@Data
public class StuProductCatalog extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * 主键id
     */
    private String id;

    /**
     * 名称
     */
    @Excel(name = "名称")
    private String courseName;

    /**
     * 封面图
     */
    @Excel(name = "封面图")
    private String coursePic;

    /**
     * 标签
     */
    @Excel(name = "标签")
    private String courseLable;

    /**
     * 描述
     */
    @Excel(name = "描述")
    private String courseDetail;

    /**
     * 视频
     */
    private String courseVideo;

    /**
     * 是否免费：0-免费，1-收费, 2-试听?
     */
    @Excel(name = "是否免费")
    private String isFree;

    /**
     * 排序
     */
    @Excel(name = "排序")
    private Long courseSort;

    /**
     * 允许最大创建层级
     */
    @Excel(name = "允许最大创建层级")
    private Long catalogNumber;

    /**
     * 目录层级
     */
    private Long catalogLevel;

    /**
     * 可根据等级设置课程，一级目录关联等级一级分类，课程绑定末级等级。
     */
    @Excel(name = "等级id")
    private String levelId;
    /**
     * 等级名称
     */
    private String levelName;
    /**
     * 等级编码
     */
    private String levelNum;

    /**
     * 父级
     */
    @Excel(name = "父级")
    private String courseParentId;

    /**
     * 关联产品，只课程下关联的课程、视频、说动、绘本
     */
    @Excel(name = "关联产品")
    private String correlationCourseId;

    /**
     * 当无激活码时,使用本字段 1：年 2 月 3 日
     */
    @Excel(name = "有效期时间单位")
    private String effectiveTermCycleType;

    /**
     * 当无激活码时,使用本字段
     */
    @Excel(name = "有效期")
    private Long effectiveTermValue;

    /**
     * 相对于前端app是否显示
     * 0-否
     * 1-是
     */
    @Excel(name = "是否显示")
    private String ifShow;

    /**
     * 小节数量
     */
    private String childrenNum;

    /**
     * 目录类型，1,课程，2 小节，3 小节下的目录
     */
    private String catalogType;

    /**
     * 产品模板ID
     */
    private String productTemplateId;

    /*会员管理中courseId是否已经设置权限*/
    @Transient
    private String ifOpen;

    private String ifDelete;
    /**
     * 生词数量
     */
    private Long wordNumber;
    /**
     * 学习状态
     */
    private String courseLearnStatus;
    /**
     * 会员ID
     */
    private String memberId;

    private String precautions;

    private Integer isCollect;

    private String stepName;
    private String gradeName;

    /**
     * 子级
     */
    private List<StuProductCatalog> children = new ArrayList<>();

    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
                .append("id", getId())
                .append("courseName", getCourseName())
                .append("coursePic", getCoursePic())
                .append("courseLable", getCourseLable())
                .append("courseDetail", getCourseDetail())
                .append("isFree", getIsFree())
                .append("courseSort", getCourseSort())
                .append("catalogNumber", getCatalogNumber())
                .append("levelId", getLevelId())
                .append("courseParentId", getCourseParentId())
                .append("correlationCourseId", getCorrelationCourseId())
                .append("createBy", getCreateBy())
                .append("createTime", getCreateTime())
                .append("updateBy", getUpdateBy())
                .append("updateTime", getUpdateTime())
                .append("effectiveTermCycleType", getEffectiveTermCycleType())
                .append("effectiveTermValue", getEffectiveTermValue())
                .append("ifShow", getIfShow())
                .toString();
    }
}
